#include <gpio.hpp>

GPIO::GPIO(int mode, uint64_t pinset)
{
#if defined(CONFIG_TAR4ESP32)
	io_conf.intr_type = GPIO_INTR_DISABLE;
	if (mode == E_GPIO_INPUT)
	{
		io_conf.mode = GPIO_MODE_INPUT;
	}
	else // if (mode == E_GPIO_OUTPUT)
	{
		io_conf.mode = GPIO_MODE_OUTPUT;
	}
	io_conf.pin_bit_mask = pinset;
	gpio_config(&io_conf);
#endif
}

GPIO::~GPIO()
{
}

int GPIO::GetValue(int gpioPin)
{
#if defined(CONFIG_TAR4ESP32)
	return gpio_get_level((gpio_num_t)gpioPin);
#else
	return 0;
#endif
}

void GPIO::SetValue(int gpioPin, int value)
{
#if defined(CONFIG_TAR4ESP32)
	gpio_set_level((gpio_num_t)gpioPin, value);
#endif
}